/*                          UX-Framework                               
 *                                                                 
 *  iZE Co.,Ltd. Copyright 2009 All rights reserved.          
 *  This file is distributed under the terms of the GNU Lesser 
 *  General Public License, described in file LICENSE.                                     
 */
package jp.ize.ux.components;

import jp.ize.ux.components.UXResource;

// {{{ class UXComponentResource
/** 
 * UXComponentResource クラス<br>
 * コンポーネントの描画に利用されるリソース情報です。<br>
 *
 * @author		iZE Co., Ltd.<br>
 * @version		$Id: UXButton.hx 20 2009-02-04 08:23:19Z yimai.v $<br>
 */
class UXComponentResource extends UXResource
{
	// {{{ properties

	public static var NORMAL      : String = "normal";
	public static var FOCUSED     : String = "focused";
	public static var SELECTED    : String = "selected";
	public static var HIGHLIGHTED : String = "highlighted";
	public static var PRESSED     : String = "pressed";
	public static var DISABLED    : String = "disabled";

	// }}}
	// {{{ public function new( ?res:Dynamic, ?isExternal:Bool ) : Void
	/**
	* コンストラクタ
	*
	* デフォルトで、NORMAL, FOCUSED, HIGHLIGHTED, PRESSED, DISABLED, SELECTED の状態を持ちます。
	* それぞれ、外部リソースとした場合にフレーム番号 1,...,6 までが割り当てられます。
	* Adobe Flash 等でリソースを作っている場合は、キーフレームとしてそれぞれのフレームに各状態を割り当てておくと便利です。
	*
	* @param res: ムービークリップ・リソースの指定です。
	* @param isExternal: 外部ムービークリップ・リソースの場合にtrueを指定すると、フレームに応じて状態が割り当てられます。
	*/
	public function new( ?res:Dynamic, ?isExternal:Bool ) : Void
	{
		super(res);
		if ( isExternal==null ) isExternal = true;
		if ( isExternal ) {
			addState( NORMAL,      Index(1) );
			addState( FOCUSED,     Index(2) );
			addState( HIGHLIGHTED, Index(3) );
			addState( PRESSED,     Index(4) );
			addState( DISABLED,    Index(5) );
			addState( SELECTED,    Index(6) );
		}
	}

	// }}}
	// {{{ public function setNormal( frame:Frame ) : Void
	/**
	* NORMAL 状態の描画方法を指定します。
	*/
	public function setNormal( frame:Frame ) : Void
	{
		states.set( NORMAL, frame );
	}

	// }}}
	// {{{ public function setFocused( frame:Frame ) : Void

	public function setFocused( frame:Frame ) : Void
	{
		states.set( FOCUSED, frame );
	}

	// }}}
	// {{{ public function setSelected( frame:Frame ) : Void
	/**
	* SELECTED 状態の描画方法を指定します。
	*/
	public function setSelected( frame:Frame ) : Void
	{
		states.set( SELECTED, frame );
	}

	// }}}
	// {{{ public function setHighlighted( frame:Frame ) : Void
	/**
	* HIGHLIGHTED 状態の描画方法を指定します。
	*/
	public function setHighlighted( frame:Frame ) : Void
	{
		states.set( HIGHLIGHTED, frame );
	}

	// }}}
	// {{{ public function setPressed( frame:Frame ) : Void
	/**
	* PRESSED 状態の描画方法を指定します。
	*/
	public function setPressed( frame:Frame ) : Void
	{
		states.set( PRESSED, frame );
	}

	// }}}
	// {{{ public function setDisabled( frame:Frame ) : Void
	/**
	* DISABLED 状態の描画方法を指定します。
	*/
	public function setDisabled( frame:Frame ) : Void
	{
		states.set( DISABLED, frame );
	}

	// }}}
	// {{{ public function normal() : Void
	/**
	* NORMAL状態に変更します。
	*/
	public function normal() : Void
	{
		setState(NORMAL);
	}

	// }}}
	// {{{ public function focused() : Void
	/**
	* FOCUSED状態に変更します。
	*/
	public function focused() : Void
	{
		setState(FOCUSED);
	}

	// }}}
	// {{{ public function highlighted() : Void
	/**
	* HIGHLIGHTED状態に変更します。
	*/
	public function highlighted() : Void
	{
		setState(HIGHLIGHTED);
	}

	// }}}
	// {{{ public function pressed() : Void
	/**
	* PRESSED状態に変更します。
	*/
	public function pressed() : Void
	{
		setState(PRESSED);
	}

	// }}}
	// {{{ public function disabled() : Void
	/**
	* DISABLED状態に変更します。
	*/
	public function disabled() : Void
	{
		setState(DISABLED);
	}

	// }}}
}
// }}}
